(provide filtros)

(batch "src/jess/funcionesComplejas.clp")
(batch "src/jess/definiciones.clp")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;FILTROS POR INTERVALO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule filtro-int-memoria 
    (consulta (consulta memoria ?min ?max))
    ?pc<- (portatil {memoria < ?min || memoria > ?max} )
    =>
	(retract ?pc)
    )

(defrule filtro-int-disco 
    (consulta (consulta disco ?min ?max))
    ?pc<- (portatil {disco < ?min || disco > ?max})
    =>
	(retract ?pc)
    )

(defrule filtro-int-pantalla 
    (consulta (consulta pantalla ?min ?max))
    ?pc<- (portatil {dimension_pantalla < ?min || dimension_pantalla > ?max})
    =>
	(retract ?pc)
    )

(defrule filtro-int-peso 
    (consulta (consulta peso ?min ?max))
    ?pc<- (portatil {peso < ?min || peso > ?max})
    =>
	(retract ?pc)
    )

(defrule filtro-int-bateria 
    (consulta (consulta bateria ?min ?max))
    ?pc<- (portatil {bateria < ?min || bateria > ?max})
    =>
	(retract ?pc)
    )

(defrule filtro-int-precio 
    (consulta (consulta precio ?min ?max))
    ?pc<- (portatil {precio < ?min || precio > ?max})
    =>
	(retract ?pc)
    )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;FILTROS POR ARRIBA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule filtro-max-memoria 
    (consulta (consulta memoria_max ?max))
    ?pc<- (portatil {memoria > ?max} )
    =>
	(retract ?pc)
    )

(defrule filtro-max-disco 
    (consulta (consulta disco_max ?max))
    ?pc<- (portatil {disco > ?max})
    =>
	(retract ?pc)
    )

(defrule filtro-max-pantalla 
    (consulta (consulta pantalla_max ?max))
    ?pc<- (portatil {dimension_pantalla > ?max})
    =>
	(retract ?pc)
    )

(defrule filtro-max-peso 
    (consulta (consulta peso_max ?max))
    ?pc<- (portatil {peso > ?max})
    =>
	(retract ?pc)
    )

(defrule filtro-max-bateria 
    (consulta (consulta bateria_max ?max))
    ?pc<- (portatil {bateria > ?max})
    =>
	(retract ?pc)
    )

(defrule filtro-max-precio 
    (consulta (consulta precio_max ?max))
    ?pc<- (portatil {precio > ?max})
    =>
	(retract ?pc)
    )


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;FILTROS POR INTERVALO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule filtro-min-memoria 
    (consulta (consulta memoria_min ?min))
    ?pc<- (portatil {memoria < ?min} )
    =>
	(retract ?pc)
    )

(defrule filtro-min-disco 
    (consulta (consulta disco_min ?min))
    ?pc<- (portatil {disco < ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-min-pantalla 
    (consulta (consulta pantalla_min ?min))
    ?pc<- (portatil {dimension_pantalla < ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-min-peso 
    (consulta (consulta peso_min ?min))
    ?pc<- (portatil {peso < ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-min-bateria 
    (consulta (consulta bateria_min ?min))
    ?pc<- (portatil {bateria < ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-min-precio 
    (consulta (consulta precio_min ?min))
    ?pc<- (portatil {precio < ?min})
    =>
	(retract ?pc)
    )

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;FILTROS POR VALOR EXACTO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defrule filtro-eq-memoria 
    (consulta (consulta memoria ?min))
    ?pc<- (portatil {memoria <> ?min} )
    =>
	(retract ?pc)
    )

(defrule filtro-eq-disco 
    (consulta (consulta disco ?min))
    ?pc<- (portatil {disco <> ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-pantalla 
    (consulta (consulta pantalla ?min))
    ?pc<- (portatil {dimension_pantalla <> ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-peso 
    (consulta (consulta peso ?min))
    ?pc<- (portatil {peso <> ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-bateria 
    (consulta (consulta bateria ?min))
    ?pc<- (portatil {bateria <> ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-precio 
    (consulta (consulta precio ?min))
    ?pc<- (portatil {precio <> ?min})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-marca 
    (consulta (consulta marca ?nombre))
    ?pc<- (portatil {marca <> ?nombre})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-modelo 
    (consulta (consulta modelo ?nombre))
    ?pc<- (portatil {modelo <> ?nombre})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-procesador 
    (consulta (consulta procesador ?nombre))
    ?pc<- (portatil {procesador <> ?nombre})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-grafica 
    (consulta (consulta grafica ?nombre))
    ?pc<- (portatil {grafica <> ?nombre})
    =>
	(retract ?pc)
    )

(defrule filtro-eq-tipo-pantalla 
    (consulta (consulta tipo_pantalla ?nombre))
    ?pc<- (portatil {tipo_pantalla <> ?nombre})
    =>
	(retract ?pc)
    )
